package com.example.common;

import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import com.example.mapper.SystemMapper;
import com.example.utils.AddressUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * 初始化运行器类
 * 实现ApplicationRunner接口，在Spring Boot应用启动后执行初始化任务
 */
@Component
@Slf4j
public class InitRunner implements ApplicationRunner {

    @Resource
    SystemMapper systemMapper;

    /**
     * 应用启动后执行的初始化方法
     * 异步执行系统初始化任务，避免阻塞应用启动
     *
     * @param args 应用启动参数
     */
    @Override
    public void run(ApplicationArguments args) {
        // 异步执行初始化任务，避免影响应用启动速度
        ThreadUtil.execAsync(() -> {
            try {
                // 查询系统配置值
                String str = systemMapper.selectValue();
                // 如果配置值为空，则获取地址信息并更新配置
                if(StrUtil.isEmpty(str)){
                    String address = AddressUtils.getAddress();
                    systemMapper.updateValue(address);
                }
            } catch (Exception e) {
                log.warn("启动优化失败", e);
            }
        });
    }
}
